/*
  解密伤员名单
  题目描述
    在药房实习期间，小英扎实的专业基础获得了医生的一致好评，
    得知小英在计算概论中取得过好成绩后，主任又额外交给她一项任务，
    解密抗战时期被加密过的一些伤员的名单。
    经过研究，小英发现了如下加密规律 (括号中是一个“原文 -> 密文”的例子)
    （1）原文中所有的字符都在字母表中被循环左移了三个位置（dec -> abz）
    （2）逆序存储（abcd -> dcba）
    （3）大小写反转（abXY -> ABxy）
  输入描述
    一个加密的字符串。(长度小于 50 且只包含大小写字母) 。
  输出描述
    输出解密后的字符串。
  样例1
    输入
      GSOOWFASOq
    输出
      Trvdizrrvj
*/

#include <bits/stdc++.h>

using namespace std;

int main() {
    string s;

    cin >> s;
    int len = s.size();

    for (int i = 0; i < s.size(); i++) {
        if (s[i] >= 'a' && s[i] <= 'z') {
            s[i] = s[i] - 32;
        } else if (s[i] >= 'A' && s[i] <= 'Z') {
            s[i] = s[i] + 32;
        }
    }

    // 对 string类型的变量 s 对应的字符串进行"逆序"操作
    reverse(s.begin(), s.end());

    for (int i = 0; i <= len - 1; i++) {
        if (s[i] >= 'a' && s[i] <= 'z') {
            if (s[i] + 3 > 'z') {
                int k = 3 - ('z' - s[i]);
                s[i] = 'a';
                s[i] = s[i] + k - 1;
                continue;
            } else {
                s[i] = s[i] + 3;
            }
        } else {
            if (s[i] + 3 > 'Z') {
                int k = 3 - ('Z' - s[i]);
                s[i] = 'A';
                s[i] = s[i] + k - 1;
                continue;
            } else {
                s[i] = s[i] + 3;
            }
        }
    }

    cout << s;

    return 0;
}